package com.yunzhong.appointment.system.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.yunzhong.appointment.entity.SysRole;
import com.yunzhong.appointment.system.service.SysRoleService;
import com.yunzhong.appointment.util.PageData;
import com.yunzhong.appointment.util.SelectOptions;

/**
 * 
 * @className SysRoleController
 * @description 角色控制器
 * @author 石洪刚
 * @time 2017年11月13日 下午2:51:51
 */
@Controller
@RequestMapping("sys")
public class SysRoleController {

	@Autowired
	private SysRoleService roleService;
	
	/**
	 * 
	 * @methodName listRole
	 * @description 查询所有角色
	 * @author 石洪刚
	 * @time 2017年11月13日 下午2:59:49
	 * @param request
	 * @param mm
	 * @return
	 */
	@RequestMapping("listRole")
	public String listRole(HttpServletRequest request, ModelMap mm){
		PageData pd = new PageData(request);
		List<SysRole> rvList = roleService.listRole(pd);
		PageInfo page = new PageInfo(rvList);
		mm.put("page", page);
		mm.put("pd", pd);
		return "system/role/listrole";
	}
	/**
	 * 
	 * @methodName pageRole
	 * @description 跳转角色的增加或修改页
	 * @author 石洪刚
	 * @time 2017年11月13日 下午3:01:19
	 * @param id
	 * @param mm
	 * @return
	 */
	@RequestMapping("pageRole")
	public String pageRole(String id, ModelMap mm){
		if(id!=null){
			SysRole role = roleService.getRoleById(id);
			mm.put("role", role);
		}
		return "system/role/pagerole";
	}
	/**
	 * 
	 * @methodName saveOrUpdateRole
	 * @description 保存或修改角色
	 * @author 石洪刚
	 * @time 2017年11月13日 下午3:03:27
	 * @param role
	 * @return
	 */
	@RequestMapping("saveOrUpdateRole")
	public String saveOrUpdateRole(SysRole role){
		roleService.saveOrUpdateRole(role);
		return "redirect:listRole";
	}
	/**
	 * 
	 * @methodName removeRole
	 * @description 删除角色
	 * @author 石洪刚
	 * @time 2017年11月13日 下午3:04:31
	 * @param ids
	 * @return
	 */
	@RequestMapping("removeRole")
	public String removeRole(String[] ids){
		roleService.removeRole(ids);
		return "redirect:listRole";
	}
	/**
	 * 
	 * @methodName checkRoleName
	 * @description 验证角色名称是否重复
	 * @author 石洪刚
	 * @time 2017年11月13日 下午3:06:08
	 * @param roleName
	 * @return
	 */
	@RequestMapping("checkRoleName")
	@ResponseBody
	public JSONObject checkRoleName(String roleName,String roleId){
		return roleService.checkRoleName(roleName,roleId);
	}
	/**
	 * 
	 * @methodName roleMenuPage
	 * @description 跳转到角色菜单页面
	 * @author 石洪刚
	 * @time 2017年11月13日 下午4:08:58
	 * @param id
	 * @return
	 */
	@RequestMapping("roleMenuPage")
	public String roleMenuPage(String id, ModelMap mm){
		SysRole role = roleService.getRoleById(id);
		List<SelectOptions> roleMenuList = roleService.listRoleMenuByRoleId(id);
		mm.put("role", role);
		mm.put("roleMenuList", roleMenuList);
		return "system/role/role_menu";
	}
	/**
	 * 
	 * @methodName saveOrUpdateRoleMenu
	 * @description 保存或修改角色菜单数据
	 * @author 石洪刚
	 * @time 2017年11月13日 下午4:50:36
	 * @param menuIds
	 * @param roleId
	 * @return
	 */
	@RequestMapping("saveOrUpdateRoleMenu")
	public String saveOrUpdateRoleMenu(String menuIds, String roleId){
		roleService.saveOrUpdateRoleMenu(menuIds, roleId);
		return "redirect:roleMenuPage?id="+roleId;
	}
}
